Elasticsearch, Logstash, এবং Kibana (ELK Stack) বা EFK Stack (Elasticsearch, Fluentd, Kibana) ব্যবহার করে কিছু প্র্যাকটিস প্রোজেক্টের আইডিয়া নিচে দেওয়া হলো। এই প্রোজেক্টগুলো আপনাকে লগ সংগ্রহ, প্রসেসিং, ইনডেক্সিং এবং ভিজ্যুয়ালাইজেশন শিখতে সাহায্য করবে।
/var/log/syslog
বা /var/log/messages
সংগ্রহের জন্য কনফিগার করুন।grok
ফিল্টার, এবং Kibana-তে ইনডেক্স প্যাটার্ন তৈরি।grok
বা json
ফিল্টার ব্যবহার করুন।json-file
লগ ড্রাইভার ব্যবহার করে কন্টেইনার লগ সংগ্রহের জন্য Filebeat সেটআপ করুন।grok
ফিল্টার ব্যবহার করে লগ পার্স করুন এবং ব্যবহারকারীর কার্যকলাপ (যেমন পেজ ভিজিট, লোগইন ইভেন্ট, ইত্যাদি) ট্র্যাক করুন।এই প্র্যাকটিস প্রোজেক্টগুলো আপনাকে বিভিন্ন লগ সংগ্রহ, প্রসেসিং, এবং ভিজ্যুয়ালাইজেশন পদ্ধতি শিখতে সাহায্য করবে। আপনি চাইলে আরও জটিল প্রোজেক্ট করতে পারেন যেখানে স্কেলিং, লোড ব্যালেন্সিং, এবং হাই-অ্যাভেইলেবিলিটি যুক্ত থাকে।
Elasticsearch ব্যবহার করে একটি Simple Search Application তৈরি করা একটি চমৎকার এবং কার্যকরী উপায় লগ ডেটা বা অন্য কোনো ডেটা সহজে সার্চ এবং রিট্রিভ করার জন্য। নিচে একটি বেসিক স্টেপ-বাই-স্টেপ গাইড দেওয়া হলো, যা অনুসরণ করে আপনি সহজেই একটি সার্চ অ্যাপ্লিকেশন তৈরি করতে পারবেন। এই অ্যাপ্লিকেশনটি Python এবং Flask ব্যবহার করে তৈরি করা হবে।
Elasticsearch সেটআপ করার জন্য:
http://localhost:9200
এ চলে।Python এবং Flask ইন্সটল করার জন্য:
pip install flask elasticsearch
Elasticsearch-এ ডেটা ইনডেক্স করতে একটি Python স্ক্রিপ্ট তৈরি করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:
from elasticsearch import Elasticsearch
# Elasticsearch সার্ভার কানেক্ট করা
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
# ইনডেক্স এবং ডকুমেন্ট তৈরি করা
def index_data():
data = [
{"title": "Elasticsearch Tutorial", "content": "Learn Elasticsearch step by step"},
{"title": "Flask API Development", "content": "Building APIs using Flask and Python"},
{"title": "Python Programming", "content": "Python programming basics and advanced concepts"}
]
for i, doc in enumerate(data):
es.index(index="articles", id=i, body=doc)
if __name__ == "__main__":
index_data()
Elasticsearch
ক্লায়েন্ট ব্যবহার করে সার্ভারে কানেক্ট করা হয়েছে।index_data
ফাংশন বিভিন্ন ডকুমেন্ট ইনডেক্স করেছে articles
নামে একটি ইনডেক্সে। ইনডেক্সের প্রতিটি ডকুমেন্টে দুটি ফিল্ড আছে: title
এবং content
।এবার Flask ব্যবহার করে একটি সার্চ API তৈরি করা হবে, যা Elasticsearch থেকে ডেটা সার্চ করতে সাহায্য করবে।
from flask import Flask, request, jsonify
from elasticsearch import Elasticsearch
app = Flask(__name__)
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
# সার্চ API তৈরি করা
@app.route('/search', methods=['GET'])
def search():
query = request.args.get('q')
if not query:
return jsonify({"error": "Query parameter 'q' is required"}), 400
# Elasticsearch কিউরি
response = es.search(index="articles", body={
"query": {
"multi_match": {
"query": query,
"fields": ["title", "content"]
}
}
})
# সার্চ রেজাল্ট রিটার্ন করা
results = []
for hit in response['hits']['hits']:
results.append(hit["_source"])
return jsonify(results)
if __name__ == '__main__':
app.run(debug=True)
/search
এ সার্চ কিউরি গ্রহণ করে।multi_match
কিউরি ব্যবহার করে title
এবং content
ফিল্ডে কিউরি চালানো হয়েছে।Flask অ্যাপ্লিকেশন চালানোর জন্য নিচের কমান্ড ব্যবহার করুন:
python app.py
এবার আপনার সার্চ API চলবে http://localhost:5000
এ। আপনি এখন সার্চ করতে পারেন:
http://localhost:5000/search?q=Python
এটি "Python" টার্ম দিয়ে সার্চ করবে এবং Elasticsearch ইনডেক্সে থাকা সব ডকুমেন্ট রিটার্ন করবে যা "Python" টার্মটির সাথে মিলে।
এই Simple Search Application Elasticsearch এবং Flask ব্যবহার করে তৈরি করা হয়েছে। এটি একটি বেসিক উদাহরণ, যা ব্যবহার করে আপনি আরও জটিল অ্যাপ্লিকেশন তৈরি করতে পারেন। অ্যাপ্লিকেশনটিতে আরও ফিচার যোগ করতে পারেন, যেমন পেজিনেশন, অ্যাডভান্সড সার্চ অপশন, এবং Kibana দিয়ে ভিজ্যুয়ালাইজেশন ইন্টিগ্রেশন।
Kibana ব্যবহার করে Data Aggregation এবং Visualization প্রোজেক্ট তৈরি করতে আপনি বিভিন্ন ডেটাসেট এবং অ্যাপ্লিকেশন লগ ব্যবহার করতে পারেন। এই প্রোজেক্টগুলোর মাধ্যমে আপনি কিভাবে Kibana-এর মাধ্যমে ডেটা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন করা যায়, তা শিখতে পারবেন। নিচে Kibana ব্যবহার করে কিছু প্র্যাকটিস প্রোজেক্টের আইডিয়া দেওয়া হলো:
apache
বা nginx
মডিউল সক্রিয় করুন যাতে লগ ডেটা সঠিক ফরম্যাটে Elasticsearch-এ পৌঁছায়।apache-*
বা nginx-*
)।ecommerce-sales-*
নামে একটি ইনডেক্স প্যাটার্ন তৈরি করুন।Kibana ব্যবহার করে এই প্র্যাকটিস প্রোজেক্টগুলো আপনাকে বিভিন্ন ধরণের ডেটা ইনডেক্সিং, প্রসেসিং, এবং ভিজ্যুয়ালাইজেশন শিখতে সহায়ক হবে।
ELK Stack (Elasticsearch, Logstash, Kibana) ব্যবহার করে একটি Log Monitoring এবং Analysis System তৈরি করা একটি অত্যন্ত কার্যকর এবং স্কেলেবল পদ্ধতি। এই সিস্টেমটি লগ সংগ্রহ, ইনডেক্সিং, প্রসেসিং, এবং ভিজ্যুয়ালাইজেশনের মাধ্যমে ডেটার ওপর গভীর অন্তর্দৃষ্টি পেতে সাহায্য করে। নিচে স্টেপ-বাই-স্টেপ নির্দেশিকা দেওয়া হলো যা অনুসরণ করে আপনি একটি সম্পূর্ণ সিস্টেম তৈরি করতে পারবেন।
Elasticsearch ইনস্টল করার জন্য:
docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.0.0
Logstash ইনস্টল এবং কনফিগার করার জন্য:
Logstash ইন্সটল করুন (যেমন apt install logstash
বা Docker ব্যবহার করতে পারেন)।
Logstash-এর জন্য একটি কনফিগারেশন ফাইল তৈরি করুন, যেমন logstash.conf
:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
}
5044
এ।grok
ফিল্টার ব্যবহার করে লগ ডেটা প্রসেস করে এবং টাইমস্ট্যাম্প ফরম্যাট করে।Logstash চালু করুন:
logstash -f /path/to/logstash.conf
Filebeat ইনস্টল করার জন্য:
Filebeat ইন্সটল করুন (apt install filebeat
বা Docker)।
Filebeat কনফিগারেশন ফাইল (filebeat.yml) এডিট করুন:
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
output.logstash:
hosts: ["localhost:5044"]
/var/log/
থেকে সব লগ সংগ্রহ করবে।5044
পোর্টে ডেটা পাঠাবে।Filebeat চালু করুন:
sudo service filebeat start
Kibana ইনস্টল করার জন্য:
Docker ব্যবহার করতে পারেন:
docker run -d --name kibana -p 5601:5601 --link elasticsearch:kibana elasticsearch/kibana:8.0.0
Kibana ব্রাউজারে অ্যাক্সেস করুন: http://localhost:5601
।
Index Pattern সেটআপ:
logs-*
।@timestamp
সিলেক্ট করুন।আপনার সিস্টেম টেস্ট করতে কয়েকটি লগ তৈরি করুন এবং তা Filebeat-এর মাধ্যমে পাঠিয়ে দেখুন। যদি সিস্টেম ঠিকভাবে কাজ করে, তাহলে আপনার লগগুলো Kibana-তে দেখা যাবে এবং ভিজ্যুয়ালাইজেশন এবং ফিল্টারিং অপশনগুলো ব্যবহার করতে পারবেন।
ELK Stack ব্যবহার করে একটি সম্পূর্ণ Log Monitoring এবং Analysis System তৈরি করা হলো। এই সিস্টেমটি:
Elasticsearch Cluster সেটআপ এবং Performance Tuning একটি গুরুত্বপূর্ণ প্রক্রিয়া, বিশেষ করে বড় আকারের লগ ডেটা বা ডকুমেন্ট ডেটা পরিচালনার ক্ষেত্রে। একটি ক্লাস্টার সেটআপ করার সময় এবং পারফরম্যান্স টিউনিং করার ক্ষেত্রে কিছু নির্দিষ্ট ধাপ এবং বেস্ট প্র্যাকটিস রয়েছে। নিচে বিস্তারিত স্টেপ-বাই-স্টেপ নির্দেশনা দেওয়া হলো:
Elasticsearch Cluster সেটআপ করার জন্য কয়েকটি গুরুত্বপূর্ণ স্টেপ আছে। ক্লাস্টার সেটআপ করার সময় ক্লাস্টারের আর্কিটেকচার, নোড টাইপ, এবং কনফিগারেশন ফাইলগুলোকে সঠিকভাবে কনফিগার করা খুব গুরুত্বপূর্ণ।
Elasticsearch Cluster-এ বিভিন্ন ধরণের নোড থাকতে পারে:
বেস্ট প্র্যাকটিস: বড় ক্লাস্টারের জন্য আলাদা Master, Data, এবং Coordinating নোড কনফিগার করা ভালো। ছোট ক্লাস্টারের ক্ষেত্রে নোডগুলো মিক্সড টাইপ হতে পারে।
Elasticsearch ইনস্টল করা:
docker run -d --name es01 -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.0.0
ক্লাস্টার কনফিগারেশন আপডেট করা (elasticsearch.yml):
cluster.name: my-elasticsearch-cluster
node.name: es-node-1
node.roles: [master, data]
network.host: 0.0.0.0
discovery.seed_hosts: ["es-node-1", "es-node-2", "es-node-3"]
cluster.initial_master_nodes: ["es-node-1", "es-node-2", "es-node-3"]
node.roles
নির্দেশ করে যে এই নোডটি কোন ধরনের কাজ করবে (master, data)।একাধিক নোড তৈরি করা:
node.name
এবং network.host
আলাদা করতে হবে।Cluster Health চেক করা:
curl
কমান্ড দিয়ে ক্লাস্টারের হেলথ চেক করতে পারেন:curl -X GET "localhost:9200/_cluster/health?pretty"
Elasticsearch Cluster-এ পারফরম্যান্স টিউনিং করার জন্য নিচের কিছু গুরুত্বপূর্ণ স্টেপ এবং বেস্ট প্র্যাকটিস অনুসরণ করতে হবে:
Elasticsearch জাভা ভিত্তিক, তাই এটি JVM ব্যবহার করে। মেমরি এবং Heap Size সঠিকভাবে সেট করা না হলে পারফরম্যান্স ইস্যু দেখা দিতে পারে।
jvm.options
ফাইলে Heap Size সেট করুন:-Xms4g
-Xmx4g
cluster.routing.allocation.disk.watermark.low: 85%
cluster.routing.allocation.disk.watermark.high: 90%
Elasticsearch-এর Thread Pool সঠিকভাবে কনফিগার করা পারফরম্যান্স বাড়াতে সাহায্য করে:
thread_pool.bulk.size: 4
thread_pool.bulk.queue_size: 200
thread_pool.search
সেটিংস কনফিগার করা যেতে পারে।indices.queries.cache.size: 20%
indices.fielddata.cache.size: 40%
Elasticsearch Cluster মনিটরিং এবং ট্রাবলশুটিং করতে পারে Kibana, Elastic Stack-এর Monitoring ফিচার, অথবা অন্যান্য টুল (যেমন Grafana, Prometheus)।
curl -X GET "localhost:9200/_cluster/health?pretty"
curl -X GET "localhost:9200/_nodes/stats?pretty"
Elasticsearch Cluster সেটআপ এবং Performance Tuning করার প্রক্রিয়া বড় আকারের ডেটা ম্যানেজমেন্ট এবং রিয়েল-টাইম সার্চ অপারেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ। সঠিকভাবে ক্লাস্টার কনফিগার এবং টিউন করলে আপনি পারফরম্যান্স ইস্যু কমাতে এবং স্কেল করতে সক্ষম হবেন।